﻿using System.Collections.Generic;
using Neturion.Dados;
using Neturion.IRepositorios;
using Neturion.Repositorios;
using Neturion.Utils;

namespace Neturion.Negocios
{
    public class NegocioSistema
    {
        private IRepositorioSistema _repositorioSistema;

        public NegocioSistema()
        {
            _repositorioSistema = new RepositorioSistema();
        }

        public Sistema Inserir(Sistema sistema, Usuario usuarioLogado)
        {
            if(string.IsNullOrEmpty(sistema.Codigo))
            {
                sistema.Codigo = GeradorCodigo.GerarCodigo(1);
                sistema.Codigo += (_repositorioSistema.ObterUltimoIdCodigoInteiro() + 1).ToString();
                sistema.Codigo += GeradorCodigo.GerarCodigo(1, sistema.Codigo);    
            }
            
            return _repositorioSistema.Inserir(sistema);
        }

        public Sistema Atualizar(Sistema sistema, Usuario usuarioLogado)
        {
            return _repositorioSistema.Atualizar(sistema);
        }

        public void Excluir(Sistema sistema, Usuario usuarioLogado)
        {
            Sistema sistemaTmp = ObterPorId(sistema.SistemaId, usuarioLogado);
            _repositorioSistema.Excluir(sistemaTmp);
        }

        public IList<Sistema> ObterTodos(int inicio, int quantidade, int quantidadeMinima, Usuario usuarioLogado, string descricao)
        {
            return _repositorioSistema.ObterTodos(inicio, quantidade, quantidadeMinima, descricao);
        }

        public Sistema ObterPorId(int id, Usuario usuarioLogado)
        {
            return _repositorioSistema.ObterPorId(id);
        }

        public Sistema ObterPorCodigo(string codigo)
        {
            return _repositorioSistema.ObterPorCodigo(codigo);
        }
    }
}